﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using System.Xml.Linq;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2204FeeDetail
    {

        /// <summary>
        /// 费用明细流水号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 单次就诊内唯一
        /// </summary>
        [DataMember(Name = "feedetl_sn")]
        public string FeedetlSn { get; set; }

        /// <summary>
        /// 就诊ID
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "mdtrt_id")]
        public string MdtrtId { get; set; }

        /// <summary>
        /// 人员编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_no")]
        public string PsnNo { get; set; }

        /// <summary>
        /// 收费批次号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 同一收费批次号病种编号必须一致
        /// </summary>
        [DataMember(Name = "chrg_bchno")]
        public string ChrgBchno { get; set; }

        /// <summary>
        /// 病种编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 按照标准编码填写：按病种结算病种目录代码(bydise_setl_list_code)、门诊慢特病病种目录代码(opsp_dise_cod)
        /// </summary>
        [DataMember(Name = "dise_codg")]
        public string DiseCodg { get; set; }

        /// <summary>
        /// 处方号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 外购处方时，传入外购处方的处方号；非外购处方，传入医药机构处方号
        /// </summary>
        [DataMember(Name = "rxno")]
        public string Rxno { get; set; }

        /// <summary>
        /// 外购处方标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "rx_circ_flag")]
        public string RxCircFlag { get; set; }

        /// <summary>
        /// 费用发生时间
        /// 参数类型：日期时间型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// yyyy-MM-dd
        /// </summary>
        [DataMember(Name = "fee_ocur_time")]
        public string FeeOcurTime { get; set; }

        /// <summary>
        /// 医疗目录编码
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "med_list_codg")]
        public string MedListCodg { get; set; }

        /// <summary>
        /// 医药机构目录编码
        /// 参数类型：字符型
        /// 参数长度：150
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "medins_list_codg")]
        public string MedinsListCodg { get; set; }

        /// <summary>
        /// 明细项目费用总额
        /// 参数类型：数值型
        /// 参数长度：16,2
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "det_item_fee_sumamt")]
        public decimal DetItemFeeSumamt { get; set; }

        /// <summary>
        /// 数量
        /// 参数类型：数值型
        /// 参数长度：16,4
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "cnt")]
        public decimal Cnt { get; set; }

        /// <summary>
        /// 单价
        /// 参数类型：数值型
        /// 参数长度：16,6
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "pric")]
        public decimal Pric { get; set; }

        /// <summary>
        /// 单次剂量描述
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "sin_dos_dscr")]
        public string SinDosDscr { get; set; }

        /// <summary>
        /// 使用频次描述
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "used_frqu_dscr")]
        public string UsedFrquDscr { get; set; }

        /// <summary>
        /// 周期天数
        /// 参数类型：数值型
        /// 参数长度：4,2
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "prd_days")]
        public decimal PrdDays { get; set; }

        /// <summary>
        /// 用药途径描述
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "medc_way_dscr")]
        public string MedcWayDscr { get; set; }

        /// <summary>
        /// 开单科室编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "bilg_dept_codg")]
        public string BilgDeptCodg { get; set; }

        /// <summary>
        /// 开单科室名称
        /// 参数类型：字符型
        /// 参数长度：100
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "bilg_dept_name")]
        public string BilgDeptName { get; set; }

        /// <summary>
        /// 开单医生编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 按照标准编码填写
        /// </summary>
        [DataMember(Name = "bilg_dr_codg")]
        public string BilgDrCodg { get; set; }

        /// <summary>
        /// 开单医师姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "bilg_dr_name")]
        public string BilgDrName { get; set; }

        /// <summary>
        /// 受单科室编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "acord_dept_codg")]
        public string AcordDeptCodg { get; set; }

        /// <summary>
        /// 受单科室名称
        /// 参数类型：字符型
        /// 参数长度：100
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "acord_dept_name")]
        public string AcordDeptName { get; set; }

        /// <summary>
        /// 受单医生编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 按照标准编码填写
        /// </summary>
        [DataMember(Name = "orders_dr_code")]
        public string OrdersDrCode { get; set; }

        /// <summary>
        /// 受单医生姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "orders_dr_name")]
        public string OrdersDrName { get; set; }

        /// <summary>
        /// 医院审批标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "hosp_appr_flag")]
        public string HospApprFlag { get; set; }

        /// <summary>
        /// 中药使用方式
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "tcmdrug_used_way")]
        public string TcmdrugUsedWay { get; set; }

        /// <summary>
        /// 外检标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "etip_flag")]
        public string EtipFlag { get; set; }

        /// <summary>
        /// 外检医院编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 按照标准编码填写
        /// </summary>
        [DataMember(Name = "etip_hosp_code")]
        public string EtipHospCode { get; set; }

        /// <summary>
        /// 出院带药标志
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "dscg_tkdrug_flag")]
        public string DscgTkdrugFlag { get; set; }

        /// <summary>
        /// 生育费用标志
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "matn_fee_flag")]
        public string MatnFeeFlag { get; set; }

        /// <summary>
        /// 组套编号
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "comb_no")]
        public string CombNo { get; set; }

        /// <summary>
        /// 字段扩展
        /// 参数类型：字符型
        /// 参数长度：4000
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "exp_content")]
        public string ExpContent { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2204InputModel
    {
        [DataMember(Name = "feedetail")]
        public SI2204FeeDetail SI2204FeeDetail { get; set; }
    }

    /// <summary>
    /// 2204
    /// 门诊费用明细信息上传
    /// </summary>
    [DataContract]
    public class SI2204RequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI2204InputModel Input { get; set; }

        public SI2204RequestModel(MedicalInsuranceOption medicalInsuranceOption,
            SI2204FeeDetail si2204FeeDetail) : base(medicalInsuranceOption)
        {
            Infno = "2204";
            Input = new SI2204InputModel();
            Input.SI2204FeeDetail = si2204FeeDetail;
        }
    }
}
